﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DGSFramework;
using System.Web.Security;

namespace Framework.LoginAdmin
{
    public partial class ForgetPassword : System.Web.UI.Page
    {
        DGSFrameworkEntities entity = new DGSFrameworkEntities();

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnSend_Click(object sender, EventArgs e)
        {
            string username = txtUsername.Text.Trim();
            string email = txtEmail.Text.Trim();
            MembershipUser someUser = Membership.GetUser(username);
            if (someUser == null)
            {
                lblMsg.InnerText = "Tên đăng nhập không tồn tại";
            }
            else if (someUser.Email.Trim() != email)
            {
                lblMsg.InnerText = "Email không đúng với tên đăng nhập";
            }
            else
            {
                string pass = Globals.GetRandomString(7);
                if (someUser.IsLockedOut == true)
                {
                    someUser.UnlockUser();
                }
                someUser.ChangePassword(someUser.ResetPassword(pass), pass);
                SendEmail(someUser.UserName, pass, someUser.Email);
                lblMsg.InnerText = Globals.GetLanguage("Mật khẩu mới đã được gửi về mail của bạn. Hãy về mail để kiểm tra và đăng nhập vào website bằng mật khẩu mới", "A new password has been sent to your mail. Please mail to check and log into the website with the new password", false);
                txtEmail.Text = "";
                txtUsername.Text = "";
            }
        }

        public void SendEmail(string username, string pass, string email)
        {
            udv_EmailHostSetting emailHostSetting = entity.udv_EmailHostSetting.FirstOrDefault();
            if (emailHostSetting != null)
            {
                string serverMail = emailHostSetting.ServerMailSMTP.Trim();
                string port = emailHostSetting.PortMailSMTP.ToString();
                string yourMailAccount = emailHostSetting.MailAccount.Trim();
                string yourMailPassword = Globals.Base64Decode(emailHostSetting.Password.Trim());
                string mailReceive = email;

                SendMail sm = new SendMail();
                sm.ServerMail = serverMail;
                sm.SSL = emailHostSetting.SSL.Value;
                sm.ServerPort = port;
                sm.YourMailAccount = yourMailAccount;
                sm.YourMailPassword = yourMailPassword;
                sm.SetUpYourServerMail();

                string title = "Lấy lại mật khẩu tại " + Request.Url.Host;

                string body = "<p><b>Tên đăng nhập: </b> " + username + "</p>";
                body += "<p><b>Mật khẩu mới: </b> " + pass + "</p>";
                body += "<p><b>Mật khẩu mới thay đổi vào lúc: </b> " + DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss tt") + "</p>";

                sm.CreateMailObject(mailReceive, body, title, emailHostSetting.MailReceive);
                sm.MailSending();
            }
        }
    }
}